package ysutils

import (
	"context"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gcfg"
	"github.com/gogf/gf/v2/os/genv"
)

// GetMapFromCfg 从配置文件中将指定 key 的值读取为 map
func GetMapFromCfg(ctx context.Context, key string, name ...string) map[string]interface{} {
	var (
		configMap map[string]interface{}
		cfg       *gcfg.Config
	)

	if len(name) > 0 && name[0] != "" {
		cfg = g.Cfg(name[0])
	} else {
		cfg = g.Cfg()
	}

	if v, _ := cfg.Get(ctx, key); !v.IsEmpty() {
		configMap = v.Map()
	}

	if len(configMap) > 0 {
		return configMap
	}

	return nil
}

// SetCfgPathEnv 设置配置文件的搜索路径
func SetCfgPathEnv(path string) {
	if genv.Get("GF_GCFG_PATH") == nil {
		_ = genv.Set("GF_GCFG_PATH", path)
	}
}

// SetCfgFileNameEnv 设置配置文件的文件名
func SetCfgFileNameEnv(file string) {
	if genv.Get("GF_GCFG_FILE") == nil {
		_ = genv.Set("GF_GCFG_FILE", file)
	}
}
